/*** 
 * @_______________#########_______________________ 
 * @______________############_____________________ 
 * @______________#############____________________ 
 * @_____________##__###########___________________ 
 * @____________###__######_#####__________________ 
 * @____________###_#######___####_________________ 
 * @___________###__##########_####________________ 
 * @__________####__###########_####_______________ 
 * @________#####___###########__#####_____________ 
 * @_______######___###_########___#####___________ 
 * @_______#####___###___########___######_________ 
 * @______######___###__###########___######_______ 
 * @_____######___####_##############__######______ 
 * @____#######__#####################_#######_____ 
 * @____#######__##############################____ 
 * @___#######__######_#################_#######___ 
 * @___#######__######_######_#########___######___ 
 * @___#######____##__######___######_____######___ 
 * @___#######________######____#####_____#####____ 
 * @____######________#####_____#####_____####_____ 
 * @_____#####________####______#####_____###______ 
 * @______#####______;###________###______#________ 
 * @________##_______####________####______________ 
 * @
 * @Author: ipk518 18163976442@163.com
 * @Date: 2024-11-27 19:34:50
 * @LastEditors: ipk518 18163976442@163.com
 * @LastEditTime: 2024-12-04 15:49:46
 * @FilePath: /etws-sxk2307/inc/I2c.h
 * @Description: 
 * @************佛祖保佑************
 * @Copyright (c) 2024 by etws@quyujiang, All Rights Reserved. 
 */

#ifndef __ETWS_I2C_H
#define __ETWS_I2C_H

// #include <stdio.h>

#define I2C_CACHE_SIZE 1024

/**
 * \brief I2C读数据
 *
 * \param[in] fd：I2C设备文件描述符
 * \param[in] dev_addr：I2C设备地址
 * \param[in] reg_addr：寄存器地址
 * \param[in] data：指向希望写入的数据地址
 * \param[in] len：希望写入的字节个数
 *
 * \retval 成功返回0，失败返回-1
 */
extern int i2cInit(const char* devPath);

/**
 * \brief I2C读数据
 *
 * \param[in] fd：I2C设备文件描述符
 * \param[in] dev_addr：I2C设备地址
 * \param[in] reg_addr：寄存器地址
 * \param[in] data：指向希望写入的数据地址
 * \param[in] len：希望写入的字节个数
 *
 * \retval 成功返回0，失败返回-1
 *
 * \note 该函数适用于8位从机地址，且寄存器地址只有1个字节的情况
 */
extern int i2cWrite(int fd, unsigned short devAddr, unsigned char regAddr, unsigned char* data, unsigned int len);

/**
 * \brief I2C读数据
 *
 * \param[in] fd：I2C设备文件描述符
 * \param[in] dev_addr：I2C设备地址
 * \param[in] reg_addr：寄存器地址
 * \param[out] data：存放读取到的数据
 * \param[in] len：希望读取的字节个数
 *
 * \retval 成功返回0，失败返回-1
 *
 * \note 该函数适用于8位从机地址，且寄存器地址只有1个字节的情况
 */
extern int i2cRead(int fd, unsigned short dev_addr,  unsigned char reg_addr, unsigned char* data, unsigned int len);

#endif